subroutine gridback (AGAIN, m_regrid, n_regrid, nonvalue, xmin, xmax, ymin, ymax, B, Petrel, filepath)

implicit none

character B*5, filepath*1000

integer :: i, j, m_regrid, n_regrid, n_back, m_back, m_back1, n_back1
integer :: petrel
real :: xmin, xmax, ymin, ymax, nonvalue

real, allocatable :: AGAIN(:,:) 

real ::  passageone
real, allocatable, dimension(:,:) ::  passagetwo

real, allocatable, dimension(:,:) :: passagethree ! (1,(377*398))
real, allocatable, dimension(:,:) :: passagethree_1 !(1, (753*795))
real, allocatable, dimension(:,:) :: passagefour !(377,398)
real, allocatable, dimension(:,:) :: passagefour_1 !(753,795)


n_back = (n_regrid/2)+1
m_back = (m_regrid/2)+1

n_back1 = ((n_back/2)+1)
m_back1 = ((m_back/2)+1)

allocate (passagethree(1,(n_back1*m_back*1)))  ! (1,(377*398))
allocate (passagethree_1(1,(n_back*m_back))) !(1, (753*795))


allocate (passagefour(n_back1,m_back1)) !(377,398)
allocate (passagefour_1(n_back,m_back)) !(753,795)


 open(unit=30,file="passageone.zmap+")
 do i = 1, n_regrid
   do j = 1, m_regrid
     if (MOD(i,2)>0.and.MOD(j,2)>0) then;
     passageone =AGAIN(i,j) 
     write(30,"(1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4)") passageone
     end if        
   end do
 end do
 close(unit=30)

    
    open(unit=30,file="passageone.zmap+")
    read(30,*) passagethree_1
    do i = 1, n_back
      do j = 1, m_back    
      passagefour_1(i,j) = passagethree_1(1, ((i-1)*(m_back)+j))    
      end do
    end do    
    close(unit=30)
    
    
   open (unit=60, file="passageone_1.zmap+") 
    do i = 1, n_back
     do j = 1, m_back
      if (MOD(i,2)>0.and.MOD(j,2)>0) then;
        passageone =passagefour_1(i,j)
      if (passageone>nonvalue.and.Petrel==1.and.passageone>0) then;
        passageone=passageone*-1
        !if(passageone>2000.0000)then;
          !print*, passageone
          !print*, i,j 
        !end if 
      end if 
        write(60,"(1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4)") passageone
      end if    
     end do
   end do  
  close (unit=60)
  allocate ( passagetwo(m_back1,1))
       
    open(unit=50,file=trim(filepath)//"Clinoform_Surface"//trim(B)//".zmap+")   
    write(50,*)'!'
    write(50,*)'!     ZIMS FILE NAME :  Envtopsphere.txt'
    write(50,*)'!     FORMATTED FILE CREATION DATE: ??/??/2010'
    write(50,*)'!     FORMATTED FILE CREATION TIME: ??:??'
    write(50,*)'!'
    write(50,1)'@Grid HEADER, GRID, 5'
1   format(A21)
    write(50,*)'	15,',nonvalue,',  ,	4 ,1.0000'
    write(50,"(I6,A,I5,A,1F12.4,A,1X,1F12.4,A,1F12.4,A,1F12.4)") m_back1,',',n_back1, ',',xmin,',',xmax,',',ymin,',',ymax
    write(50,*)'0.0000     0.0000     0.0000'
	write(50,2)'@'
2   format(A1)
         do i = 1, n_back1 
            open(unit=60,file="passageone_1.zmap+")
            read(60,*) passagetwo
            write(50,"(1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4,1X,1F10.4)") passagetwo
         end do
    close(unit=50)   
    close(unit=60)
    
        print*, "Completed clinoform surface",trim(B)
   
return
end subroutine gridback